package com.project2.service;

import com.project2.bean.vo.ChildrenInChildrenInListInDataInAdminRegionVo;
import com.project2.bean.vo.ChildrenInListInDataInAdminRegionVo;
import com.project2.bean.vo.DataInAdminRegionVo;
import com.project2.bean.vo.ListInDataInAdminRegionVo;
import com.project2.mapper.MarketRegionMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author zhangminghui
 * @date 2022/8/12
 */
@Service
public class AdminRegionServiceImpl implements AdminRegionService {
    @Autowired
    MarketRegionMapper marketRegionMapper;

    @Override
    public DataInAdminRegionVo queryAllRegionInfo() {
        // todo: 在执行查询之前开启分页，这个接口根本用不到分页。。。
        //PageHelper.startPage(pageBo.getPage(), pageBo.getLimit());
        //List<MarketRegion> marketRegionList = marketRegionMapper.selectByExample(null);
        // todo: 封装(list)ListInDataInAdminRegionVo，默认是升序
        //  查出省的id，name，type，code，children暂时不查
        //  根据省份type查出所有省份，用listInDataInAdminRegionVo接收
        Integer provinceType = 1;
        List<ListInDataInAdminRegionVo> listInDataInAdminRegionVos = marketRegionMapper.queryListInDataInAdminRegionVoByProvinceType(provinceType);

        DataInAdminRegionVo dataInAdminRegionVo = new DataInAdminRegionVo();
        dataInAdminRegionVo.setTotal(31);
        dataInAdminRegionVo.setPages(1);
        dataInAdminRegionVo.setLimit(31);
        dataInAdminRegionVo.setPage(1);
        dataInAdminRegionVo.setList(listInDataInAdminRegionVos);

        // todo: 封装(childrean)ChildrenInListInDataInAdminRegionVo
        //  根据pid(错误，要用省份id)、type查询出各省的省会、地级市，vo中没有pid
        Integer cityType = 2;
        for (int i = 0; i < dataInAdminRegionVo.getList().size(); i++) {
            // todo: 按照省份id是升序
            List<ChildrenInListInDataInAdminRegionVo> childrenInListInDataInAdminRegionVos = marketRegionMapper.queryChildrenInListInDataInAdminRegionVoByPidAndCityType(
                    dataInAdminRegionVo.getList().get(i).getId(),cityType);
            // todo: 省份与省会、地级市对应
            listInDataInAdminRegionVos.get(i).setChildren(childrenInListInDataInAdminRegionVos);
        }

        // todo: 封装(children in children)ChildrenInChildrenInListInDataInAdminRegionVo
        //  根据省会、地级市id，查询出省会、地级市下面的地区
        Integer countryType = 3;
        // todo: 根据cityType查询出所有的省会、地级市，用
        //  ChildrenInListInDataInAdminRegionVo接收
        for (int i = 0; i < dataInAdminRegionVo.getList().size(); i++) {
            for (int i1 = 0; i1 < dataInAdminRegionVo.getList().get(i).getChildren().size(); i1++) {
                List<ChildrenInChildrenInListInDataInAdminRegionVo> childrenInChildrenInListInDataInAdminRegionVos = marketRegionMapper.queryChildrenInChildrenInListInDataInAdminRegionVoByPidAndCountryType(
                        dataInAdminRegionVo.getList().get(i).getChildren().get(i1).getId(), countryType);
                dataInAdminRegionVo.getList().get(i).getChildren().get(i1).setChildren(childrenInChildrenInListInDataInAdminRegionVos);
            }
        }
        return dataInAdminRegionVo;

    }
}
